package com.ktgj.common.sms.entity;

import com.ktgj.common.sms.service.CHttpPost;

import java.util.ArrayDeque;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class RecvMoThread extends Thread {
    private String ip = null; // IP地址
    private String port = null; // 端口
    private String userid = null; // 账号
    private String password = null; // 密码

    public RecvMoThread(String ip, String port, String userid, String password)
    {
        this.ip = ip; // 设置IP地址
        this.port = port; // 设置端口
        this.userid = userid; // 设置账号
        this.password = password; // 设置密码
    }
    private CHttpPost sms = new CHttpPost();// 获取上行业务类

    /**
     * 接收上行线程
     */
    public void run()
    {
        while (true)
        {
            try{
                List<MoPack> moPackList = sms.GetMo(ip, port, userid, password); // 调用获取上行接口
                if (moPackList == null || moPackList.size()==0)
                {
                    try {
                        Thread.sleep(5000L);
                    } // 没有上行，延时3~10秒
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                } // 如果没有上行
                else
                {
                    for (MoPack moPack: moPackList) {
                        System.out.println("接收上行手机信息内容" + moPack.getStrMessage() + "手机号" + moPack.getStrMobile());
                    }
                    // 有上行
                    // 添加到上行队列
                    // add mo queue
                    // 这里不要做复杂的耗时的处理，将收到的上行保存在一个队列中(队列线程安全)，由另外一个线程去处理。
                    continue; // 继续循环
                }
            }catch (Exception e) {
                e.printStackTrace();
                try {
                    Thread.sleep(5000L);
                } //循环出现异常，暂停5秒
                catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }// 循环调用获取上行的方法
    }
}
